package com.qms.qep.service;

import java.util.List;
import java.util.Map;
import com.qms.qep.domain.InspectionTask;
import com.qms.qep.domain.dto.InspectionTaskDTO;

/**
 * 检验任务Service接口
 */
public interface IInspectionTaskService {
    /**
     * 查询检验任务
     * 
     * @param id 检验任务主键
     * @return 检验任务
     */
    public InspectionTask selectInspectionTaskById(Integer id);

    /**
     * 查询检验任务列表
     * 
     * @param inspectionTask 检验任务
     * @return 检验任务集合
     */
    public List<InspectionTask> selectInspectionTaskList(InspectionTask inspectionTask);
    
    /**
     * 查询检验任务DTO列表
     * 
     * @param inspectionTask 检验任务
     * @return 检验任务DTO集合
     */
    public List<InspectionTaskDTO> selectInspectionTaskDTOList(InspectionTask inspectionTask);

    /**
     * 新增检验任务
     * 
     * @param inspectionTask 检验任务
     * @return 结果
     */
    public int insertInspectionTask(InspectionTask inspectionTask);

    /**
     * 修改检验任务
     * 
     * @param inspectionTask 检验任务
     * @return 结果
     */
    public int updateInspectionTask(InspectionTask inspectionTask);

    /**
     * 批量删除检验任务
     * 
     * @param ids 需要删除的检验任务主键集合
     * @return 结果
     */
    public int deleteInspectionTaskByIds(Integer[] ids);

    /**
     * 删除检验任务信息
     * 
     * @param id 检验任务主键
     * @return 结果
     */
    public int deleteInspectionTaskById(Integer id);
    
    /**
     * 分配检验任务
     * 
     * @param inspectionTask 检验任务
     * @return 结果
     */
    public int assignInspectionTask(InspectionTask inspectionTask);
    
    /**
     * 开始检验任务
     * 
     * @param id 检验任务ID
     * @return 结果
     */
    public int startInspectionTask(Integer id);
    
    /**
     * 完成检验任务
     * 
     * @param inspectionTask 检验任务
     * @return 结果
     */
    public int finishInspectionTask(InspectionTask inspectionTask);
    
    /**
     * 根据状态查询检验任务数量
     * 
     * @param taskStatus 任务状态
     * @return 结果
     */
    public int countInspectionTaskByStatus(Integer taskStatus);
    
    /**
     * 查询检验任务通过情况统计
     * 
     * @return 结果
     */
    public List<InspectionTaskDTO> selectInspectionTaskStatistics();
    
    /**
     * 查询检验任务月度统计数据
     * 
     * @return 月度统计数据
     */
    public List<Map<String, Object>> selectInspectionTaskMonthlyStatistics();
    
    /**
     * 自动生成检验任务编号
     * 
     * @return 任务编号
     */
    public String generateTaskCode();
} 